/*   
 * Copyright 2011-2012 the original author or authors.   
 *   
 * Licensed under the Apache License, Version 2.0 (the "License");   
 * you may not use this file except in compliance with the License.   
 * You may obtain a copy of the License at   
 *   
 *      http://www.apache.org/licenses/LICENSE-2.0   
 *   
 * Unless required by applicable law or agreed to in writing, software   
 * distributed under the License is distributed on an "AS IS" BASIS,   
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
 * See the License for the specific language governing permissions and   
 * limitations under the License.   
 */
package code.google.com.p.antigovframe.sample.dao;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import code.google.com.p.antigovframe.sample.domain.Task;

/**
 * @author Jacob Lee
 * @since 2012. 7. 17.
 * 
 */
@Repository
public class TaskDAOImpl implements TaskDAO {
	@Autowired(required=true)
	private SessionFactory sessionFactory;
	
	/* (non-Javadoc)
	 * @see org.orda.sample.dao.TaskDAO#findById(java.lang.Long)
	 */
	public Task findById(Long id) {
		return (Task) this.sessionFactory.getCurrentSession().createQuery(
				"from Task task where task.id=?").setParameter(0, id)
				.uniqueResult();
	}

	/* (non-Javadoc)
	 * @see org.orda.sample.dao.TaskDAO#persistOrMerge(org.orda.sample.dao.Task)
	 */
	public Task persistOrMerge(Task task) {
		return (Task) this.sessionFactory.getCurrentSession().merge(task);
	}

	/* (non-Javadoc)
	 * @see org.orda.sample.dao.TaskDAO#findByNo(java.lang.String)
	 */
	public Task findByNo(String taksNo) {
		return (Task) this.sessionFactory.getCurrentSession().createQuery(
				"from Task task where task.taskNo=?").setParameter(0, taksNo)
				.uniqueResult();
	}

}
